#pragma once
#include "StdAfx.h"
#include "Ingredient.h"

enum
{
	_TYPE_A = 0,
	_TYPE_B,
	_TYPE_C,
	_TYPE_D,
};

enum
{
	_STAGE_1 = 1,
	_STAGE_2,
	_STAGE_3,
};

enum
{
	_LEVEL_1 = 1,
	_LEVEL_2,
	_LEVEL_3,
	_LEVEL_4,
	_LEVEL_5,
	_LEVEL_6,
	_LEVEL_7,
	_LEVEL_8,
	_LEVEL_9,
	_LEVEL_10,
};

enum
{
	_SAMETIME,
	_ASCENDING,
	_DESCENDING,
};

class Stage_cl
{
public:
	Stage_cl();
	~Stage_cl();

	static Stage_cl& GetInstance() { static Stage_cl stage; return stage; }
	void Run(float Delta);
	void Reset();

	void SetStage(int Stage, int level);
	void SetLevel(int PosTypeNum, bool bPosTypeRand, int PosTypeMin, int CreateNum, int SpecialItemNum, bool bSpecialItemRand, int MoveType, int StartType, bool isHigh, int LevelStream, int Repeat);
	float SetMoveType(int numtype, int type);

private:
	int m_Stage;
	int m_Level;
	int m_Repeat;
	int m_CurRepeat;
	int m_LevelStream;
	int m_CurLevelStream;

	float m_NextLevelTime;
	float m_DelayTime;

	bool m_bEndLevel;

	float m_MoveDir;

	int m_StartCount;
	int m_CreateNum;
	int m_StartType;
	bool m_bEndLevelStream;

	std::vector <Ingredient_cl*> m_StartTypeList;
};
